Fair share scheduling is a functional feature in workload management products. In a distributed processing environment, such as a clustered environment, workload management software products are used to schedule user programs or jobs to run on various machines of the environment. Fair share scheduling drives the scheduling decisions in the direction of dividing the processing resources of the processing environment among users or groups of users according to predefined proportions.
In fair share scheduling, a user or group of users is allocated a certain proportion of the resources of the environment, and the scheduling priority of a job of that user or group of users is dependent on the amount of resources used by the user or group of users as compared against the resources used by all users or groups of users. Thus, the scheduling priority of a job of one user or group of users is dependent on the amount of resources consumed by other users. The proportion of resources is often expressed as a percentage of total resource usage.
This scheduling based on resource consumption by others may produce unstable and undesirable scheduling for the jobs of an individual user. Such scheduling may be unstable because it is dependent on the workload of others, which may change drastically at any point in time. Also, it is undesirable because the scheduling of a user's job is based on resource consumption by other users.
In fair share scheduling, the historic resource usage decays over time to allow the more recently used resources to have larger influence on the scheduling decisions. A mechanism to record and decay the historic resource usage is necessary, and it is often accomplished through a stepwise decay function over a number of recent intervals of finite length. A large amount of historic resource usage data may need to be tracked for a cluster with many users.